StupidBeauty
Read times:410Posted at:Thu Jun 7 02:52:22 2012
- no title specified

QJson0.7.0文档翻译:QJson::QObjectHelper类参考,QJson::QObjectHelper Class Reference

详细说明

这个类用来将QObject 和QVariant 互相转换。在这些转换过程中,只有那些被定义为属性(properties)的类成员(attributes)会被处理。

假设一个类Person,定义如下:

class Person : public QObject

{

Q_OBJECT

Q_PROPERTY(QString name READ name WRITE setName)

Q_PROPERTY(int phoneNumber READ phoneNumber WRITE setPhoneNumber)

Q_PROPERTY(Gender gender READ gender WRITE setGender)

Q_PROPERTY(QDate dob READ dob WRITE setDob)

Q_ENUMS(Gender)

public:

Person(QObject* parent = 0);

~Person();

QString name() const;

void setName(const QString& name);

int phoneNumber() const;

void setPhoneNumber(const int phoneNumber);

enum Gender {Male, Female};

void setGender(Gender gender);

Gender gender() const;

QDate dob() const;

void setDob(const QDate& dob);

private:

QString m_name;

int m_phoneNumber;

Gender m_gender;

QDate m_dob;

};

以下代码可将一个Person 实例序列化为JSON:

Person person;

person.setName("Flavio");

person.setPhoneNumber(123456);

person.setGender(Person::Male);

person.setDob(QDate(1982, 7, 12));

QVariantMap variant = QObjectHelper::qobject2qvariant(&person);

Serializer serializer;

qDebug() << serializer.serialize( variant);

所生成的输出内容:

{ "dob" : "1982-07-12", "gender" : 0, "name" : "Flavio", "phoneNumber" : 123456 }

另外,还可以使用一个QVariantMap 中储存的值来初始化一个QObject。

假设妳有如下JSON 数据,储存于一个QString 中:

{ "dob" : "1982-07-12", "gender" : 0, "name" : "Flavio", "phoneNumber" : 123456 }

以下代码会使用JSON 中的值来对一个已经分配空间的Person 实例进行初始化:

Parser parser;

QVariant variant = parser.parse(json);

Person person;

QObjectHelper::qvariant2qobject(variant.toMap(), &person);

参考:

Parser

Serializer

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4